一键生成文件夹中所有文件列表到Excel电子表格
点“考研竞赛数学”↑可每天“涨姿势”哦!
有时候,我们可能需要将某一个文件夹下的所有文件名输出为一个Excel电子表格,或者输入到文档中进行处理,除此之外,可能还需要文件的修改日期、文件大小等信息;更更重要的是,有时候除了当前文件夹下面的所有文件名称之外,还希望一次性将它包含的所有子文件夹下的文件都列出来,并且有时候还仅仅希望列出指定文件类型,比如某些类型图像文件名称列出来,那么该如何实现呢?
操作系统:Windows10
实验环境:Mathematica11.2
方法一:文件比较少的情形
1、平铺资源管理器窗口和数学软件Mathematica窗口,如图1. 按下键盘上的Windows图标键,不松开按下向左、或向右方向键,可以快速平铺这两个已经打开的窗口。
图1 平铺窗口
2、在文件夹名称上按下鼠标左键,拖动文件夹到Mathematica软件窗口松开,会显示处该文件夹,包括子文件中的所有包含后缀名的文件列表,如图2。
图2
3、在出现的列表前面输入a=,然后按下【Shift】+【Enter】将文件名称列表赋值给名称为a的变量。
4、再在最下面的空白位置处单击鼠标左键,输入如下Mathematica表达式:
info=FileNameTake[#]&/@a;
Export["文件名称列表.xls",info]
按下【Shift】+【Enter】执行,得到如下结果,如图3.
图3
5、点击下面的“打开”,打开生成的Excel文件,可以看到所有带有后缀名的文件名称列出在电子表格文件的第一列。
【注】将其中的FileNameTake改成FileBaseName,则生成的文件名列表只有名称,没有扩展名。
方法二:文件很多的情形
用方法一,当文件非常多的时候看起来比较乱,而且平铺窗口,拖放文件夹操作也不方便。下面我们将这个操作定义为一个Mathematica的函数,并带两个参数来控制,具体使用方式与注意事项参见说明文字。
(*ext用来控制是否显示扩展名,默认值为1,表示显示,0或其他值不显示;full控制是否显示文件的绝对路径与文件名,默认0表示不显示,其他值,如1表示显示*)
FnamesToExcel[ext_:1,full_:0]:=Module[{dir,files,info},
(*打开Windows自带的选择文件夹对话框,选择要列出文件的文件夹*)
dir=SystemDialogInput["Directory"];
(*列出指定文件夹,包括子文件夹中的所有绝对文件名,如果将参数”*.*”改成{“*.jpg","*.png"},则仅仅显示以jpg,png为后缀名的图像文件*)
files=FileNames["*.*",File[dir],Infinity];
(*获取文件名称,修改日期和文件大小*)
info={If[full==0,If[ext==1,FileNameTake[#],FileBaseName[#]],#],FileDate[#],ToString[FileSize[#]]}&/@files;
(*打开另存为对话框保存输入的Excel电子文件,其中默认的文件名称为"文件列表"加上当前日期与时间*)
Return[Export[SystemDialogInput["FileSave",{"文件列表"<>StringJoin[ToString[#]&/@Take[DateList[],5]],{"Excel电子表格文件(*.xlsx,*xls)"->{"*.xlsx,*.xls"}}}],info]]]
执行以上表达式后定义函数,然后在最后面的空白位置单击左键输入:
FnamesToExcel[0,0]
执行后生成带有日期、大小和不带扩展名的文件列表Excel文件,效果如图4。
图4 不带扩展名
执行FnamesToExcel[1,0]带有扩展名,效果如图5;
图5带有扩展名
执行FnamesToExcel[0,1],文件名为绝对文件名,效果如图6。
图6 绝对文件名
这样的方法相对于Windows自带程序直接处理的情形应该来说更实用,更直接。
相关推荐
微信公众号:考研竞赛数学(ID: xwmath) 大学数学公共基础课程分享交流平台!
↓↓↓点阅读原文查看所有文章列表